package com.morningstar.system.dao.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.morningstar.common.dao.entity.BaseEntity;
import com.morningstar.system.controller.result.ArcoDesignFile;
import lombok.Getter;
import lombok.Setter;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 用户信息表
 * </p>
 *
 * @author yls
 * @since 2023-06-15
 */
@Getter
@Setter
@TableName("sys_user")
public class SysUser extends BaseEntity {

    /**
     * 用户ID
     */
    @TableId(value = "user_id", type = IdType.ASSIGN_ID)
    private Long userId;

    /**
     * 部门ID
     */
    @TableField("dept_id")
    private Long deptId;

    /**
     * 登录名称
     */
    @TableField("login_name")
    private String loginName;

    /**
     * 用户名称
     */
    @TableField("user_name")
    private String userName;

    /**
     * 用户类型
     */
    @TableField("user_type")
    private String userType;

    /**
     * 用户邮箱
     */
    @TableField("email")
    private String email;

    /**
     * 手机号码
     */
    @TableField("phone")
    private String phone;

    /**
     * 用户性别
     */
    @TableField("sex")
    private String sex;

    /**
     * 用户头像
     */
    @TableField("avatar")
    private String avatar;

    /**
     * 密码
     */
    @TableField(value = "password")
    private String password;

    /**
     * 帐号状态（0正常 1停用）
     */
    @TableField("status")
    private String status;

    /**
     * 最后登录IP
     */
    @TableField("login_ip")
    private String loginIp;

    /**
     * 最后登录时间
     */
    @TableField("login_date")
    private LocalDateTime loginDate;

    /**
     * 密码最后更新时间
     */
    @TableField("pwd_update_date")
    private LocalDateTime pwdUpdateDate;

    @TableField("remark")
    private String remark;

    /**
     * 部门名称
     */
    @TableField(exist = false)
    private String deptName;

    /**
     * 角色
     */
    @TableField(exist = false)
    private List<Long> roleIds;

    /**
     * 角色列表
     */
    @TableField(exist = false)
    private List<String> roleNames;

    /**
     * 岗位组
     */
    @TableField(exist = false)
    private List<Long> postIds;

    /**
     * 岗位名称
     */
    @TableField(exist = false)
    private List<String> postNames;

    /**
     * 权限列表
     */
    @TableField(exist = false)
    private List<String> permissions;

    /**
     * 用户头像列表
     */
    @TableField(exist = false)
    private List<ArcoDesignFile> arcoDesignFiles;
}
